package com.sykj.bsc.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.zip.GZIPInputStream;

public class FileUtil {

	public static boolean  downloadUrlFile(String urlString, String filePath){
		File file = new File(filePath);
		// 如果替换的话，先删除再创建
		if (file.exists()) {  //如果存在，则先删除
			file.delete();
		}
		OutputStream os =null;
		GZIPInputStream gis=null;
		InputStream is=null;
		try {
			URL  url = new URL(urlString);
			URLConnection con = url.openConnection(); // 打开连接
			is = con.getInputStream(); // 输入流
			String code = con.getHeaderField("Content-Encoding");  // 获取文件编码
			byte[] bs = new byte[1024];// 读取到的数据长度
			int len=0;
			if ((null != code) && code.equals("gzip")) {    
			    gis= new GZIPInputStream(is); // 1K的数据缓冲
		        os = new FileOutputStream(filePath); // 输出的文件流
				// 开始读取
				while ((len = gis.read(bs)) != -1) {
					os.write(bs, 0, len);
				}
			
			} else {
				os= new FileOutputStream(filePath);// 输出的文件流
				while ((len = is.read(bs)) != -1) {	// 开始读取
					os.write(bs, 0, len);
				}
			
			}
			return true;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			// 完毕，关闭所有链接
				try {
					if(gis!=null){
					gis.close();
				   }
					if(os!=null){
						os.close();
					}
					if(is!=null){
						is.close();
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			
		return false;
	}
	
	public static boolean createFolder(String folderPath) {
		File folderFile = new File(folderPath); // 如果文件夹不存在 则创建文件夹
		if(folderFile.getParentFile().exists()){
			folderFile.mkdir();
		  }else{
			  createFolder(folderFile.getParentFile().getPath());
			  folderFile.mkdir();
		}
		return true;
	}
}
